Location-based music content identification

ABSTRACT

Example techniques disclosed herein relate to location-based music content identification. In an example implementation, a first computing device receives, over one or more networks, a location message comprising location information indicating a particular location of a second computing device at a given time. Based on the location information and the given time, the first computing device determines identification information indicating media content played by one or more playback devices at the particular location and availability information indicating availability of at least one media item of the media content from a media streaming service. The first computing device transmits, over the one or more networks to the second computing device, the identification information indicating the media content and an indication that the at least one media item of the media content is available for playback via the media streaming service.

CROSS REFERENCE TO RELATED APPLICATIONS

This application claims priority under 35 U.S.C. § 120 to, and is acontinuation of, U.S. non-provisional patent application Ser. No.14/244,246, filed on Apr. 3, 2014, entitled “Methods and Systems forTransmitting Playlists,” which is incorporated herein by reference inits entirety.

FIELD OF THE DISCLOSURE

The disclosure is related to consumer goods and, more particularly, tomethods, systems, products, features, services, and other elementsdirected to media playback or some aspect thereof.

BACKGROUND

Options for accessing and listening to digital audio in an out-loudsetting were limited until in 2003, when SONOS, Inc. filed for one ofits first patent applications, entitled “Method for Synchronizing AudioPlayback between Multiple Networked Devices,” and began offering a mediaplayback system for sale in 2005. The Sonos Wireless HiFi System enablespeople to experience music from many sources via one or more networkedplayback devices. Through a software control application installed on asmartphone, tablet, or computer, one can play what he or she wants inany room that has a networked playback device. Additionally, using thecontroller, for example, different songs can be streamed to each roomwith a playback device, rooms can be grouped together for synchronousplayback, or the same song can be heard in all rooms synchronously.

Given the ever growing interest in digital media, there continues to bea need to develop consumer-accessible technologies to further enhancethe listening experience.

BRIEF DESCRIPTION OF THE DRAWINGS

Features, aspects, and advantages of the presently disclosed technologymay be better understood with regard to the following description,appended claims, and accompanying drawings where:

FIG. 1 shows an example media playback system configuration in whichcertain embodiments may be practiced;

FIG. 2 shows a functional block diagram of an example playback device;

FIG. 3 shows a functional block diagram of an example control device;

FIG. 4 shows an example controller interface;

FIG. 5 shows example events and example devices;

FIG. 6 shows an example flow diagram for an example method;

FIG. 7 shows an example flow diagram for an example method;

FIG. 8 shows an example display;

FIG. 9 shows an example display;

FIG. 10 shows an example display.

The drawings are for the purpose of illustrating example embodiments,but it is understood that the inventions are not limited to thearrangements and instrumentality shown in the drawings.

DETAILED DESCRIPTION I. Overview

Users of mobile computing devices, such as laptop computers orsmartphones, may travel to various locations throughout a day. At someof these locations there may be network-enabled media playback devicesplaying media content, such as music, movies, talk radio, or otheraudio/visual content. A user at one of these locations may hear or see aportion of media content that the user would like to hear or see again.Additionally and/or alternatively, the user may wish to receiveadditional information about the portion of media content, such as asong title, an associated artist, or an album title, among otherexamples.

In some cases, the user might use a media identifier application runningon a mobile computing device to retrieve information that identifies aportion of media content that the user wishes to know more about. Forexample, the user may initiate the application while the portion ofmedia content is playing at the location, and the application may causethe mobile computing device to record or “listen” to the portion ofmedia content, perhaps with an integrated microphone. The recordedportion of media content may be transmitted to a server so that theserver may compare the recorded portion to a database of known portionsof media content. If the server finds a match, the server may transmitan indication of the match to the user's mobile computing device,thereby identifying the portion of media content for the user.

However, it may be inefficient or otherwise undesirable for the user toinitiate a media identifier application as described above. Forinstance, it may be undesirable for the user to initiate the applicationevery time the user hears or sees media content of interest being playedat various locations. Further, the user may wish to obtain informationregarding the media content of interest at a later time and in a moreintuitive manner.

As such, according to some example implementations described herein, auser might identify media content in a more efficient and/or desirablemanner. A mobile computing device associated with a user may provide aserver with information about the user's location history, and theserver may then determine portions of media content that were played bymedia playback system(s) at various locations corresponding to thelocation history of the user. To enable this, the server may collectplaylist information from network-enabled media playback systems at thevarious locations. Later, the server may then provide, to the user'scomputing device (or another suitable device), information related tomedia content that was playing at a location that the user was at duringa time period of interest.

Accordingly, some embodiments described herein involve, among otherthings, providing from a server to a control device, informationregarding media content that was played by a media playback device whilea user was at a location corresponding to the media playback device.Some embodiments further involve a control device displaying theinformation received from the server and providing a capability for auser to control another media playback device by, perhaps, causing themedia playback device to play the identified media content. Otheraspects of the embodiments will be made apparent in the remainder of thedescription herein.

In one aspect, a method is provided. The method involves receiving anindication that a user was at a location at a particular time;identifying at least one portion of media content playing at thelocation at the particular time; and transmitting data that indicatesthe identified at least one portion of media content to a computingdevice associated with the user.

In another aspect, a computing device is provided. In someimplementations, the computing device may be a server device. Thecomputing device includes a processor and memory storing instructionsthat when executed by the computing device, cause the computing deviceto perform functions. The functions include receiving an indication thata user was at a location at a particular time; identifying at least oneportion of media content playing at the location at the particular time;and transmitting data that indicates the identified at least one portionof media content to a computing device associated with the user.

In yet another aspect, a non-transitory computer readable memory isprovided. The non-transitory computer readable memory has stored thereoninstructions executable by a computing device to cause the computingdevice to perform functions. The functions include receiving anindication that a user was at a location at a particular time;identifying at least one portion of media content playing at thelocation at the particular time; and transmitting data that indicatesthe identified at least one portion of media content to a computingdevice associated with the user.

In another aspect, a method is provided. The method involvestransmitting, by a control device configured to control a first playbackdevice, an indication that a user was at a location at a particular timeand receiving, at the control device, data identifying at least oneportion of media content played by a second playback device. The atleast one portion of media content was played by the second playbackdevice at the location at the particular time when the user was at thelocation. The method further includes causing, by the control device, agraphical display to display the data identifying the at least oneportion of media content played at the location at the particular timewhen the user was at the location.

In another aspect, a control device configured to control a firstplayback device is provided. The control device includes a processor andmemory storing instructions that when executed by the control device,cause the device to perform functions. The functions includetransmitting an indication that a user was at a location at a particulartime and receiving data identifying at least one portion of mediacontent played by a second playback device. The at least one portion ofmedia content was played by the second playback device at the locationat the particular time when the user was at the location. The methodfurther includes causing a graphical display to display the dataidentifying the at least one portion of media content played at thelocation at the particular time when the user was at the location.

In yet another aspect, a non-transitory computer readable memory isprovided. The non-transitory computer readable memory has stored thereoninstructions executable by a computing device configured to control afirst playback device to cause the computing device to performfunctions. The functions include transmitting an indication that a userwas at a location at a particular time and receiving data identifying atleast one portion of media content played by a second playback device.The at least one portion of media content was played by the secondplayback device at the location at the particular time when the user wasat the location. The method further includes causing a graphical displayto display the data identifying the at least one portion of mediacontent played at the location at the particular time when the user wasat the location.

It will be understood by one of ordinary skill in the art that thisdisclosure includes numerous other embodiments.

II. Example Operating Environment

FIG. 1 shows an example configuration of a media playback system 100 inwhich one or more embodiments disclosed herein may be practiced orimplemented. The media playback system 100 as shown is associated withan example home environment having several rooms and spaces, such as forexample, a master bedroom, an office, a dining room, and a living room.As shown in the example of FIG. 1, the media playback system 100includes playback devices 102-124, control devices 126 and 128, and awired or wireless network router 130.

Further discussions relating to the different components of the examplemedia playback system 100 and how the different components may interactto provide a user with a media experience may be found in the followingsections. While discussions herein may generally refer to the examplemedia playback system 100, technologies described herein are not limitedto applications within, among other things, the home environment asshown in FIG. 1. For instance, the technologies described herein may beuseful in environments where multi-zone audio may be desired, such as,for example, a commercial setting like a restaurant, mall or airport, avehicle like a sports utility vehicle (SUV), bus or car, a ship or boat,an airplane, and so on.

a. Example Playback Devices

FIG. 2 shows a functional block diagram of an example playback device200 that may be configured to be one or more of the playback devices102-124 of the media playback system 100 of FIG. 1. The playback device200 may include a processor 202, software components 204, memory 206,audio processing components 208, audio amplifier(s) 210, speaker(s) 212,and a network interface 214 including wireless interface(s) 216 andwired interface(s) 218. In one case, the playback device 200 may notinclude the speaker(s) 212, but rather a speaker interface forconnecting the playback device 200 to external speakers. In anothercase, the playback device 200 may include neither the speaker(s) 212 northe audio amplifier(s) 210, but rather an audio interface for connectingthe playback device 200 to an external audio amplifier or audio-visualreceiver.

In one example, the processor 202 may be a clock-driven computingcomponent configured to process input data according to instructionsstored in the memory 206. The memory 206 may be a tangiblecomputer-readable medium configured to store instructions executable bythe processor 202. For instance, the memory 206 may be data storage thatcan be loaded with one or more of the software components 204 executableby the processor 202 to achieve certain functions. In one example, thefunctions may involve the playback device 200 retrieving audio data froman audio source or another playback device. In another example, thefunctions may involve the playback device 200 sending audio data toanother device or playback device on a network. In yet another example,the functions may involve pairing of the playback device 200 with one ormore playback devices to create a multi-channel audio environment.

Certain functions may involve the playback device 200 synchronizingplayback of audio content with one or more other playback devices.During synchronous playback, a listener will preferably not be able toperceive time-delay differences between playback of the audio content bythe playback device 200 and the one or more other playback devices. U.S.Pat. No. 8,234,395 entitled, “System and method for synchronizingoperations among a plurality of independently clocked digital dataprocessing devices,” which is hereby incorporated by reference, providesin more detail some examples for audio playback synchronization amongplayback devices.

The memory 206 may further be configured to store data associated withthe playback device 200, such as one or more zones and/or zone groupsthe playback device 200 is a part of, audio sources accessible by theplayback device 200, or a playback queue that the playback device 200(or some other playback device) may be associated with. The data may bestored as one or more state variables that are periodically updated andused to describe the state of the playback device 200. The memory 206may also include the data associated with the state of the other devicesof the media system, and shared from time to time among the devices sothat one or more of the devices have the most recent data associatedwith the system. Other embodiments are also possible.

The audio processing components 208 may include one or moredigital-to-analog converters (DAC), an audio preprocessing component, anaudio enhancement component or a digital signal processor (DSP), and soon. In one embodiment, one or more of the audio processing components208 may be a subcomponent of the processor 202. In one example, audiocontent may be processed and/or intentionally altered by the audioprocessing components 208 to produce audio signals. The produced audiosignals may then be provided to the audio amplifier(s) 210 foramplification and playback through speaker(s) 212. Particularly, theaudio amplifier(s) 210 may include devices configured to amplify audiosignals to a level for driving one or more of the speakers 212. Thespeaker(s) 212 may include an individual transducer (e.g., a “driver”)or a complete speaker system involving an enclosure with one or moredrivers. A particular driver of the speaker(s) 212 may include, forexample, a subwoofer (e.g., for low frequencies), a mid-range driver(e.g., for middle frequencies), and/or a tweeter (e.g., for highfrequencies). In some cases, each transducer in the one or more speakers212 may be driven by an individual corresponding audio amplifier of theaudio amplifier(s) 210. In addition to producing analog signals forplayback by the playback device 200, the audio processing components 208may be configured to process audio content to be sent to one or moreother playback devices for playback.

Audio content to be processed and/or played back by the playback device200 may be received from an external source, such as via an audioline-in input connection (e.g., an auto-detecting 3.5 mm audio line-inconnection) or the network interface 214.

The network interface 214 may be configured to facilitate a data flowbetween the playback device 200 and one or more other devices on a datanetwork. As such, the playback device 200 may be configured to receiveaudio content over the data network from one or more other playbackdevices in communication with the playback device 200, network deviceswithin a local area network, or audio content sources over a wide areanetwork such as the Internet. In one example, the audio content andother signals transmitted and received by the playback device 200 may betransmitted in the form of digital packet data containing an InternetProtocol (IP)-based source address and IP-based destination addresses.In such a case, the network interface 214 may be configured to parse thedigital packet data such that the data destined for the playback device200 is properly received and processed by the playback device 200.

As shown, the network interface 214 may include wireless interface(s)216 and wired interface(s) 218. The wireless interface(s) 216 mayprovide network interface functions for the playback device 200 towirelessly communicate with other devices (e.g., other playbackdevice(s), speaker(s), receiver(s), network device(s), control device(s)within a data network the playback device 200 is associated with) inaccordance with a communication protocol (e.g., any wireless standardincluding IEEE 802.11a, 802.11b, 802.11g, 802.11n, 802.11ac, 802.15, 4Gmobile communication standard, and so on). The wired interface(s) 218may provide network interface functions for the playback device 200 tocommunicate over a wired connection with other devices in accordancewith a communication protocol (e.g., IEEE 802.3). While the networkinterface 214 shown in FIG. 2 includes both wireless interface(s) 216and wired interface(s) 218, the network interface 214 may in someembodiments include only wireless interface(s) or only wiredinterface(s).

In one example, the playback device 200 and one other playback devicemay be paired to play two separate audio components of audio content.For instance, playback device 200 may be configured to play a leftchannel audio component, while the other playback device may beconfigured to play a right channel audio component, thereby producing orenhancing a stereo effect of the audio content. The paired playbackdevices (also referred to as “bonded playback devices”) may further playaudio content in synchrony with other playback devices.

In another example, the playback device 200 may be sonicallyconsolidated with one or more other playback devices to form a single,consolidated playback device. A consolidated playback device may beconfigured to process and reproduce sound differently than anunconsolidated playback device or playback devices that are paired,because a consolidated playback device may have additional speakerdrivers through which audio content may be rendered. For instance, ifthe playback device 200 is a playback device designed to render lowfrequency range audio content (i.e. a subwoofer), the playback device200 may be consolidated with a playback device designed to render fullfrequency range audio content. In such a case, the full frequency rangeplayback device, when consolidated with the low frequency playbackdevice 200, may be configured to render only the mid and high frequencycomponents of audio content, while the low frequency range playbackdevice 200 renders the low frequency component of the audio content. Theconsolidated playback device may further be paired with a singleplayback device or yet another consolidated playback device.

By way of illustration, SONOS, Inc. presently offers (or has offered)for sale certain playback devices including a “PLAY:1,” “PLAY:3,”“PLAY:5,” “PLAYBAR,” “CONNECT:AMP,” “CONNECT,” and “SUB.” Any otherpast, present, and/or future playback devices may additionally oralternatively be used to implement the playback devices of exampleembodiments disclosed herein. Additionally, it is understood that aplayback device is not limited to the example illustrated in FIG. 2 orto the SONOS product offerings. For example, a playback device mayinclude a wired or wireless headphone. In another example, a playbackdevice may include or interact with a docking station for personalmobile media playback devices. In yet another example, a playback devicemay be integral to another device or component such as a television, alighting fixture, or some other device for indoor or outdoor use.

b. Example Playback Zone Configurations

Referring back to the media playback system 100 of FIG. 1, theenvironment may have one or more playback zones, each with one or moreplayback devices. The media playback system 100 may be established withone or more playback zones, after which one or more zones may be added,or removed to arrive at the example configuration shown in FIG. 1. Eachzone may be given a name according to a different room or space such asan office, bathroom, master bedroom, bedroom, kitchen, dining room,living room, and/or balcony. In one case, a single playback zone mayinclude multiple rooms or spaces. In another case, a single room orspace may include multiple playback zones.

As shown in FIG. 1, the balcony, dining room, kitchen, bathroom, office,and bedroom zones each have one playback device, while the living roomand master bedroom zones each have multiple playback devices. In theliving room zone, playback devices 104, 106, 108, and 110 may beconfigured to play audio content in synchrony as individual playbackdevices, as one or more bonded playback devices, as one or moreconsolidated playback devices, or any combination thereof. Similarly, inthe case of the master bedroom, playback devices 122 and 124 may beconfigured to play audio content in synchrony as individual playbackdevices, as a bonded playback device, or as a consolidated playbackdevice.

In one example, one or more playback zones in the environment of FIG. 1may each be playing different audio content. For instance, the user maybe grilling in the balcony zone and listening to hip hop music beingplayed by the playback device 102 while another user may be preparingfood in the kitchen zone and listening to classical music being playedby the playback device 114. In another example, a playback zone may playthe same audio content in synchrony with another playback zone. Forinstance, the user may be in the office zone where the playback device118 is playing the same rock music that is being playing by playbackdevice 102 in the balcony zone. In such a case, playback devices 102 and118 may be playing the rock music in synchrony such that the user mayseamlessly (or at least substantially seamlessly) enjoy the audiocontent that is being played out-loud while moving between differentplayback zones. Synchronization among playback zones may be achieved ina manner similar to that of synchronization among playback devices, asdescribed in previously referenced U.S. Pat. No. 8,234,395.

As suggested above, the zone configurations of the media playback system100 may be dynamically modified, and in some embodiments, the mediaplayback system 100 supports numerous configurations. For instance, if auser physically moves one or more playback devices to or from a zone,the media playback system 100 may be reconfigured to accommodate thechange(s). For instance, if the user physically moves the playbackdevice 102 from the balcony zone to the office zone, the office zone maynow include both the playback device 118 and the playback device 102.The playback device 102 may be paired or grouped with the office zoneand/or renamed if so desired via a control device such as the controldevices 126 and 128. On the other hand, if the one or more playbackdevices are moved to a particular area in the home environment that isnot already a playback zone, a new playback zone may be created for theparticular area.

Further, different playback zones of the media playback system 100 maybe dynamically combined into zone groups or split up into individualplayback zones. For instance, the dining room zone and the kitchen zone114 may be combined into a zone group for a dinner party such thatplayback devices 112 and 114 may render audio content in synchrony. Onthe other hand, the living room zone may be split into a television zoneincluding playback device 104, and a listening zone including playbackdevices 106, 108, and 110, if the user wishes to listen to music in theliving room space while another user wishes to watch television.

c. Example Control Devices

FIG. 3 shows a functional block diagram of an example control device 300that may be configured to be one or both of the control devices 126 and128 of the media playback system 100. As shown, the control device 300may include a processor 302, memory 304, a network interface 306, and auser interface 308. In one example, the control device 300 may be adedicated controller for the media playback system 100. In anotherexample, the control device 300 may be a network device on which mediaplayback system controller application software may be installed, suchas for example, an iPhone™ iPad™ or any other smart phone, tablet ornetwork device (e.g., a networked computer such as a PC or Mac™).

The processor 302 may be configured to perform functions relevant tofacilitating user access, control, and configuration of the mediaplayback system 100. The memory 304 may be configured to storeinstructions executable by the processor 302 to perform those functions.The memory 304 may also be configured to store the media playback systemcontroller application software and other data associated with the mediaplayback system 100 and the user.

In one example, the network interface 306 may be based on an industrystandard (e.g., infrared, radio, wired standards including IEEE 802.3,wireless standards including IEEE 802.11a, 802.11b, 802.11g, 802.11n,802.11ac, 802.15, 4G mobile communication standard, and so on). Thenetwork interface 306 may provide a means for the control device 300 tocommunicate with other devices in the media playback system 100. In oneexample, data and information (e.g., such as a state variable) may becommunicated between control device 300 and other devices via thenetwork interface 306. For instance, playback zone and zone groupconfigurations in the media playback system 100 may be received by thecontrol device 300 from a playback device or another network device, ortransmitted by the control device 300 to another playback device ornetwork device via the network interface 306. In some cases, the othernetwork device may be another control device.

Playback device control commands such as volume control and audioplayback control may also be communicated from the control device 300 toa playback device via the network interface 306. As suggested above,changes to configurations of the media playback system 100 may also beperformed by a user using the control device 300. The configurationchanges may include adding/removing one or more playback devices to/froma zone, adding/removing one or more zones to/from a zone group, forminga bonded or consolidated player, separating one or more playback devicesfrom a bonded or consolidated player, among others. Accordingly, thecontrol device 300 may sometimes be referred to as a controller, whetherthe control device 300 is a dedicated controller or a network device onwhich media playback system controller application software isinstalled.

The user interface 308 of the control device 300 may be configured tofacilitate user access and control of the media playback system 100, byproviding a controller interface such as the controller interface 400shown in FIG. 4. The controller interface 400 includes a playbackcontrol region 410, a playback zone region 420, a playback status region430, a playback queue region 440, and an audio content sources region450. The user interface 400 as shown is just one example of a userinterface that may be provided on a network device such as the controldevice 300 of FIG. 3 (and/or the control devices 126 and 128 of FIG. 1)and accessed by users to control a media playback system such as themedia playback system 100. Other user interfaces of varying formats,styles, and interactive sequences may alternatively be implemented onone or more network devices to provide comparable control access to amedia playback system.

The playback control region 410 may include selectable (e.g., by way oftouch or by using a cursor) icons to cause playback devices in aselected playback zone or zone group to play or pause, fast forward,rewind, skip to next, skip to previous, enter/exit shuffle mode,enter/exit repeat mode, enter/exit cross fade mode. The playback controlregion 410 may also include selectable icons to modify equalizationsettings, and playback volume, among other possibilities.

The playback zone region 420 may include representations of playbackzones within the media playback system 100. In some embodiments, thegraphical representations of playback zones may be selectable to bringup additional selectable icons to manage or configure the playback zonesin the media playback system, such as a creation of bonded zones,creation of zone groups, separation of zone groups, and renaming of zonegroups, among other possibilities.

For example, as shown, a “group” icon may be provided within each of thegraphical representations of playback zones. The “group” icon providedwithin a graphical representation of a particular zone may be selectableto bring up options to select one or more other zones in the mediaplayback system to be grouped with the particular zone. Once grouped,playback devices in the zones that have been grouped with the particularzone will be configured to play audio content in synchrony with theplayback device(s) in the particular zone. Analogously, a “group” iconmay be provided within a graphical representation of a zone group. Inthis case, the “group” icon may be selectable to bring up options todeselect one or more zones in the zone group to be removed from the zonegroup. Other interactions and implementations for grouping andungrouping zones via a user interface such as the user interface 400 arealso possible. The representations of playback zones in the playbackzone region 420 may be dynamically updated as playback zone or zonegroup configurations are modified.

The playback status region 430 may include graphical representations ofaudio content that is presently being played, previously played, orscheduled to play next in the selected playback zone or zone group. Theselected playback zone or zone group may be visually distinguished onthe user interface, such as within the playback zone region 420 and/orthe playback status region 430. The graphical representations mayinclude track title, artist name, album name, album year, track length,and other relevant information that may be useful for the user to knowwhen controlling the media playback system via the user interface 400.

The playback queue region 440 may include graphical representations ofaudio content in a playback queue associated with the selected playbackzone or zone group. In some embodiments, each playback zone or zonegroup may be associated with a playback queue containing informationcorresponding to zero or more audio items for playback by the playbackzone or zone group. For instance, each audio item in the playback queuemay comprise a uniform resource identifier (URI), a uniform resourcelocator (URL) or some other identifier that may be used by a playbackdevice in the playback zone or zone group to find and/or retrieve theaudio item from a local audio content source or a networked audiocontent source, possibly for playback by the playback device.

In one example, a playlist may be added to a playback queue, in whichcase information corresponding to each audio item in the playlist may beadded to the playback queue. In another example, audio items in aplayback queue may be saved as a playlist. In a further example, aplayback queue may be empty, or populated but “not in use” when theplayback zone or zone group is playing continuously streaming audiocontent, such as Internet radio that may continue to play untilotherwise stopped, rather than discrete audio items that have playbackdurations. In an alternative embodiment, a playback queue can includeInternet radio and/or other streaming audio content items and be “inuse” when the playback zone or zone group is playing those items. Otherexamples are also possible.

When playback zones or zone groups are “grouped” or “ungrouped,”playback queues associated with the affected playback zones or zonegroups may be cleared or re-associated. For example, if a first playbackzone including a first playback queue is grouped with a second playbackzone including a second playback queue, the established zone group mayhave an associated playback queue that is initially empty, that containsaudio items from the first playback queue (such as if the secondplayback zone was added to the first playback zone), that contains audioitems from the second playback queue (such as if the first playback zonewas added to the second playback zone), or a combination of audio itemsfrom both the first and second playback queues. Subsequently, if theestablished zone group is ungrouped, the resulting first playback zonemay be re-associated with the previous first playback queue, or beassociated with a new playback queue that is empty or contains audioitems from the playback queue associated with the established zone groupbefore the established zone group was ungrouped. Similarly, theresulting second playback zone may be re-associated with the previoussecond playback queue, or be associated with a new playback queue thatis empty, or contains audio items from the playback queue associatedwith the established zone group before the established zone group wasungrouped. Other examples are also possible.

Referring back to the user interface 400 of FIG. 4, the graphicalrepresentations of audio content in the playback queue region 440 mayinclude track titles, artist names, track lengths, and other relevantinformation associated with the audio content in the playback queue. Inone example, graphical representations of audio content may beselectable to bring up additional selectable icons to manage and/ormanipulate the playback queue and/or audio content represented in theplayback queue. For instance, a represented audio content may be removedfrom the playback queue, moved to a different position within theplayback queue, or selected to be played immediately, or after anycurrently playing audio content, among other possibilities. A playbackqueue associated with a playback zone or zone group may be stored in amemory on one or more playback devices in the playback zone or zonegroup, on a playback device that is not in the playback zone or zonegroup, and/or some other designated device.

The audio content sources region 450 may include graphicalrepresentations of selectable audio content sources from which audiocontent may be retrieved and played by the selected playback zone orzone group. Discussions pertaining to audio content sources may be foundin the following section.

d. Example Audio Content Sources

As indicated previously, one or more playback devices in a zone or zonegroup may be configured to retrieve for playback audio content (e.g.according to a corresponding URI or URL for the audio content) from avariety of available audio content sources. In one example, audiocontent may be retrieved by a playback device directly from acorresponding audio content source (e.g., a line-in connection). Inanother example, audio content may be provided to a playback device overa network via one or more other playback devices or network devices.

Example audio content sources may include a memory of one or moreplayback devices in a media playback system such as the media playbacksystem 100 of FIG. 1, local music libraries on one or more networkdevices (such as a control device, a network-enabled personal computer,or a networked-attached storage (NAS), for example), streaming audioservices providing audio content via the Internet (e.g., the cloud), oraudio sources connected to the media playback system via a line-in inputconnection on a playback device or network devise, among otherpossibilities.

In some embodiments, audio content sources may be regularly added orremoved from a media playback system such as the media playback system100 of FIG. 1. In one example, an indexing of audio items may beperformed whenever one or more audio content sources are added, removedor updated. Indexing of audio items may involve scanning foridentifiable audio items in all folders/directory shared over a networkaccessible by playback devices in the media playback system, andgenerating or updating an audio content database containing metadata(e.g., title, artist, album, track length, among others) and otherassociated information, such as a URI or URL for each identifiable audioitem found. Other examples for managing and maintaining audio contentsources may also be possible.

The above discussions relating to playback devices, controller devices,playback zone configurations, and media content sources provide onlysome examples of operating environments within which functions andmethods described below may be implemented. Other operating environmentsand configurations of media playback systems, playback devices, andnetwork devices not explicitly described herein may also be applicableand suitable for implementation of the functions and methods.

III. Example Methods and Systems

As discussed above, some embodiments described herein may involve, amongother things, providing from a first computing device (such as a server)to a second computing device (such as a control device configured tocontrol a given media playback system associated with the controldevice), information regarding media content that was played by a mediaplayback device while a user was at a location corresponding to themedia playback device. Some embodiments further involve, a controldevice displaying the information received from the server and providinga capability for a user to control another media playback device by,perhaps, causing the media playback device to play the media contentthat was played by the playback device while the user was at thecorresponding location. Other aspects of the embodiments will be madeapparent in the remainder of the description herein.

In this section the term “computing device” may have the same meaning asthe terms “network device” and/or “controller device” used in previoussections, unless it is clear from context that this is not the case. Theterm “server” may also be used interchangeably with the term “serverdevice.” Terminology such as “server,” “server device,” “controller,”“controller device,” “network device,” and “computing device” aregenerally used for explanatory purposes in this disclosure and are notmeant to be limiting. One of skill in the art will recognize that anysuitable computing device may perform various functions disclosed hereinand that the preceding list of terms is non-exhaustive.

FIG. 5 shows an example sequence of events and example devices, inaccordance with at least some embodiments disclosed herein. Portions ofFIG. 5 are referenced below with respect to a description of examplemethods 600 and 700, and so a brief overview of FIG. 5 is now provided.Certain aspects of FIG. 5 are discussed further below with respect toexample methods 600 and 700.

FIG. 5 includes a computing device 502, a server 504, a control device506, location messages 508A, 508B, and 508C, media playback devices510A, 510B(1), 510B(2) 510C, and 510D, playlist data 512A, 512B, 512C,and 512D. In some embodiments, the computing device 502 and the controldevice 506 may be the same device, but in other embodiments they may bedistinct devices.

The following description pertaining to FIG. 5 may depict a certainsequence of events and/or functions, but such a sequence is disclosedherein for illustrative purposes only and should not be construed aslimiting. In other examples, the events and/or functions depicted inFIG. 5 may occur in a sequence different from that depicted in FIG. 5.

At time t₁, a user and the computing device 502 may be at Location 1 andthe user may cause the computing device 502 to transmit a locationmessage 508A (i.e. a message including information about the location ofthe computing device 502) to the server 504. In response to receivingthe location message 508A, the server 504 may request to receive, fromthe media playback device 510A at Location 1, information regarding oneor more portions of media content that was playing at time t₁ atLocation 1 (i.e. playlist data 512A). In another example, the server 504may periodically receive information regarding the one or more portionsof media content from the playback device 510A, without previouslyreceiving the location message 508A. In this case, the server 504 mayidentify the one or more portions of media content as playing at thelocation at the particular time minutes or even hours after receivingthe information regarding the one or more portions of media content.Other examples are possible.

In some instances, the playlist data 512A may include information aboutportions of media content that were playing before and after time t₁ atLocation 1 (i.e. during a time window that includes the particular timewhen the location message 508A was transmitted). The server 504 may thenreceive the playlist data 512A regarding the one or more portions ofmedia content, from the media playback device 510A.

At time t₂ (after t₁ but before t₃), the user and the computing device502 may be at Location 2 Zone 2 and the user may cause the computingdevice 502 to transmit the location message 508B to the server 504. Thelocation message 508B may indicate that the computing device 502 is atZone 2 of Location 2 (and not Zone 1 of Location 2). Zones 1 and 2 ofLocation 2 may be distinct playback zones of Location 2. In response toreceiving the location message 508B, the server 504 may send a request,to the media playback device 510B(2) at Location 2 Zone 2, to receiveinformation regarding one or more portions of media content that wasplaying at time t₂ at Location 2 Zone 2 (i.e. playlist data 512B). Insome instances, the playlist data 512B may include information aboutportions of media content that were playing before and after time t₂ atLocation 2. The server 504 may then receive the playlist data 512Bregarding the one or more portions of media content, from the mediaplayback device 510B(2).

At time t₃ (after t₂ but before t₄), the user and the computing device502 may be at Location 3 and the user may cause the computing device 502to transmit the location message 508C to the server 504. Based onreceiving the location message 508C, the server may send a request, tothe media playback device 510C at Location 3, to receive informationregarding one or more portions of media content that was playing at timet₃ at Location 3 (i.e. playlist data 512C). In some instances, theplaylist data 512C may include information about portions of mediacontent that were playing before and after time t₃ at Location 3. Theserver 504 may then receive the playlist data 512C regarding the one ormore portions of media content, from the media playback device 510C.

At time t₄ (after t₃), the server 504 may transmit to the control device506 and/or the media playback device 510D, the playlist data 512D, whichmay include some or all of the playlist data 512A, 512B, and 512C. Themedia playback device 510D may be located at the user's home, forexample, and the media playback device 510 d and/or the control device506 may use the playlist data 512D to retrieve and/or playback mediacontent represented by the playlist data 512D. The server 504 maytransmit the playlist data 512D based on receiving a request to do sofrom the control device 506, or in response to receiving a notificationfrom the control device 506 or the media playback device 510D that thecontrol device 506 is accessing the media playback device 510D.

Method 600 shown in FIG. 6 presents an embodiment of a method that canbe implemented within an operating environment involving, for example,the media playback system 100 of FIG. 1, one or more of the playbackdevice 200 of FIG. 2, and one or more of the control device 300 of FIG.3. Method 600 may include one or more operations, functions, or actionsas illustrated by one or more of blocks 602-606. Although the blocks areillustrated in sequential order, these blocks may also be performed inparallel, and/or in a different order than those described herein. Also,the various blocks may be combined into fewer blocks, divided intoadditional blocks, and/or removed based upon the desired implementation.

In addition, for the method 600 and other processes and methodsdisclosed herein, the flowchart shows functionality and operation of onepossible implementation of present embodiments. In this regard, eachblock may represent a module, a segment, or a portion of program code,which includes one or more instructions executable by a processor forimplementing specific logical functions or steps in the process. Theprogram code may be stored on any type of computer readable medium, forexample, such as a storage device including a disk or hard drive. Thecomputer readable medium may include non-transitory computer readablemedium, for example, such as computer-readable media that stores datafor short periods of time like register memory, processor cache andRandom Access Memory (RAM). The computer readable medium may alsoinclude non-transitory media, such as secondary or persistent long termstorage, like read only memory (ROM), optical or magnetic disks,compact-disc read only memory (CD-ROM), for example. The computerreadable media may also be any other volatile or non-volatile storagesystems. The computer readable medium may be considered a computerreadable storage medium, for example, or a tangible storage device. Inaddition, for the method 600 and other processes and methods disclosedherein, each block in FIG. 6 may represent circuitry that is wired toperform the specific logical functions in the process.

At block 602, the method includes receiving an indication that a userwas at a location at a particular time. As one example, location message508A in FIG. 5, may be received by server 504. Further, some examples ofinformation that may be included in a location message are shown incolumn 812 of FIG. 8 (i.e. Joe's Coffee Shop). The location message mayinclude a descriptive identifier of the location (e.g. John's Tavern),geolocation data corresponding to the location (e.g. 123 Fake Ave. or41° 16′ 01.0″ N 95° 55′ 59.1″ W), a name of a computer networkassociated with the location (e.g. Bill's Router), and/or a time atwhich the location message was transmitted (e.g. 3:12 PM). Other suchexamples may exist.

In accordance with block 602 (and, in particular, the indication that auser was at a location at a particular time), a user may use a computingdevice such as a smartphone to transmit an indication in the form of a“check-in” message (i.e. a location message), to a server (i.e. a serverdevice). (The server may function similar to network device 300 of FIG.3 and have similar and/or additional components.) The user may transmitthe “check-in” message because the user wishes to later be provided withdata identifying a portion of media content playing at the location. Thesmartphone may transmit the indication in response to a user confirminga check-in location via a third-party application, such as a “socialnetworking” application, running on the smartphone. The socialnetworking application may, for example, cause the smartphone to displaysuggested check-in locations to the user based on detecting a WIFIhotspot that the smartphone is connected to, or based on thesmartphone's GPS-resolved location. By way of illustration, the receivedindication may specify that the user was at “Joe's Coffee Shop” at 3:59PM on Mar. 11, 2014. The server may receive the indication from thecomputing device over a wireless or wired network.

Alternatively, the server may receive the indication from an additionalserver associated with the third-party application. In this case, theuser may have a user-account with the additional server associated withthe third-party application, and the additional server may receive thelocation message from the user's computing device and then transmit thelocation message to the server. The indication may be received by theserver from a computing device associated with the user that laterreceives data transmitted by the server at block 606, or may be receivedfrom an additional computing device associated with the user.

In some cases, the server may be configured to receive location messagesdirectly from the user's computing device. For example, the server mayreceive the indication from a computing device that is executing anapplication used to control the user's media playback devices. Theapplication may further be associated with the server in that the servermay be directly integrated with the application, the user's mediaplayback systems, and a database of the user's past locations. In thisway, the server may be configured to receive location messages andassociate locations of the user with portions of media content that wereplayed at those locations.

In another example, the received indication may include an indicationthat the user conducted a financial transaction at the location. Perhapsupon the user opting in for such a process, the user may use a creditcard to make a purchase at the location, and a network-enabled creditcard scanner may send a location message to the server indicating thatthe cardholder (i.e. the user) was at the location at the particulartime. In this way, the server may receive a location message indicatingthat the user was at the location at the particular time without theuser having to explicitly transmit a message to the server.

In the examples described above with regard to block 602, the user mayhave full control over whether and/or how the user's location history isused. In one example, the user's location information will only becollected or used to identify media content if the user explicitlyexpresses consent to such collection or use. In another example, theserver may refrain from collecting information that could be used forpersonally identifying the user, and may only collect information thatcould be used to identify a user-account. Also, the user may be able toopt out of location data collection and use at any time.

At block 604, the method includes identifying at least one portion ofmedia content playing at the location at the particular time. The atleast one portion of media content may include a fragment or a completeportion of audible or visible content, such as a pre-recorded song,live-streaming audio or video content, sports highlights, news stories,and talk radio segments, among other examples.

Before identifying the at least one portion of media content, the servermay receive data identifying the at least one portion of media contentplaying at the location at the particular time. As one example, theplaylist data 512A in FIG. 5 may be received by the server 504. Thereceived data may include information about media content played at thelocation, and times at which the media content was played. The servermay then identify the at least one portion of media content to be theportion of media content indicated, by the received data, to have beenplayed at the location at the particular time.

The identifying data may be received from a network-enabled playbackdevice at the location (e.g. Joe's Coffee Shop) and the data may includeat least one of: a title, a composer, an album title, a musical genre, aplayback duration, a year of release, or a performer associated with theat least one portion of media content, among other examples. Forexample, rows of the display of FIG. 8 contain examples of such datapertaining to respective portions of media content. The data mayidentify the at least one portion of media content, the location wherethe at least one portion of media content was playing (e.g. viageolocation data or a descriptive identifier representing the location),and the particular time the at least one portion of media content wasplaying at the location. The data identifying the location may alsoidentify a playback zone where the portion of media content played ormay identify a media playback system that played the portion of mediacontent (e.g. balcony area at Joe's Coffee Shop). In sum, the receiveddata may include information such as “Play Time=3:42 pm, Content=Song A,Artist=Artist 1, Album Title=Album i, Track Duration=3:46,” as shown inFIG. 8, among other examples.

In some examples, the server may transmit, to a media playback device atthe location, a request to provide the data identifying the at least oneportion of media content. The server may transmit the request inresponse to receiving the indication that the user was at the locationat the particular time. The media playback device may provide the dataupon request. In another example, the server may periodically receiveinformation regarding the at least one portion of media content from themedia playback device, without previously receiving the indication thatthe user was at the location at the particular time. In this case, theserver may identify the at least one portion of media content as playingat the location at the particular time minutes or even hours afterreceiving the information regarding the at least one portion of mediacontent. Other examples are possible.

At block 606, the method includes transmitting data that indicates theidentified at least one portion of media content to a computing deviceassociated with the user. As an example, the server may transmit theplaylist data 512D of FIG. 5 to the control device 506. The transmitteddata may include, as an example, data included in one or more rows ofthe example display of FIG. 8. In FIG. 8, “Song E” may represent atleast one portion of media content playing at the location at theparticular time.

The server may transmit the data to the computing device from which theserver originally received the “check-in” notification. As noted above,the user may have transmitted the “check-in” notification because theuser wishes to later be provided with data identifying a portion ofmedia content playing at the location. Alternatively, the server maytransmit the data to an additional computing device associated with theuser, such as a tablet computer configured to control a home mediaplayback system associated with the user (which may be the same deviceas the device used to transmit the “check-in” notification), among otherexamples.

Before transmitting the data that indicates the identified at least oneportion of media content, the server may first identify the mediaplayback system associated with the user, perhaps by searchinguser-account information previously submitted by the user to the server.The server may then transmit the data that indicates the identified atleast one portion of media content to the media playback system and/orthe control device configured to control the media playback system.

The server may also transmit the data indicating the identified at leastone portion of media content in response to receiving a request from theuser (i.e. from a computing device associated with the user.) Forexample, the computing device may be running a media playbackapplication and the device's touchscreen may display a virtual buttontitled “Geo-Queue” or “Check-In Related Playlists,” among otherexamples. Upon touching or clicking this button, the device may send arequest to the server to provide the data indicating the at least oneportion of media content.

This block may also be performed by the server after receiving anindication that a computing device (e.g. associated with the user) isaccessing a media playback system, and based on receiving theindication, transmitting the data indicating the at least one portion ofmedia content to the computing device. For example, upon opening (i.e.executing) a media playback application on the computing device, thecomputing device may automatically transmit a request to the server toprovide the data to the computing device.

In some embodiments, it may be useful for the user to receiveinformation regarding more than the single portion of media content(i.e. the single song, movie clip, news, or talk radio segment) that wasplaying at the location at the particular time when the user (i.e. acomputing device) provided the location message to the server. Themethod may therefore include the server identifying a plurality ofportions of media content playing at the location during a time periodthat includes the particular time. This may include the serverreceiving, from a computing device associated with the user, dataindicating the time period that includes the particular time, andidentifying the plurality of portions of media content based on the dataindicating the time period. Likewise, the server may transmit, perhapsto the computing device, the data that indicates the plurality ofportions of media content playing at the location during the time periodthat includes the particular time.

For example, the user may use a computing device to transmit to theserver a location message, similar to previously mentioned examples. Forexample, computing device 502 of FIG. 5 may transmit the locationmessage 508A to the server 504. The computing device may later transmitan indication of a time period of interest, such as 3:42-4:20 PM on Mar.11, 2014, or may transmit an indication of a generic time period thatincludes the particular time (i.e. a time period that spans from 20minutes before and 20 minutes after the location message was transmittedby the computing device to the server). The server may receive, from amedia playback system, a list of portions of media content that playedat the location, and the server may determine which portions correspondto the received time period. Or, the server may provide the time periodto a media playback system located at the location, and the mediaplayback system may provide data representing only the portions of mediacontent that correspond to the time period. Then, the server maytransmit the data, to the user's computing device, indicating theplurality of portions of media content identified as playing at thelocation during the time period. In one example, the computing devicemay transmit an indication of the particular time (i.e. not a timeperiod) and the server may nevertheless provide data indicating aplurality of portions of media content identified as playing at thelocation during a time period that includes the particular time.

FIG. 8 includes an example dataset, transmitted from the server to thecomputing device, that indicates a plurality of portions of mediacontent playing at the location during the time period that includes theparticular time. For example, a first row indicates a Song A that wasplayed by a media playback system at the location during the timeperiod, which may include 3:42:00 PM to 4:17:49 PM, as an example.According to the dataset, Song A began playing at 3:42:00 PM, isassociated with “Artist 1” and an “Album i,” has a duration of 3 minutesand 46 seconds, and was played at “Joe's Coffee Shop.”

Method 700 shown in FIG. 7 presents an embodiment of a method that canbe implemented within an operating environment involving, for example,the media playback system 100 of FIG. 1, one or more of the playbackdevice 200 of FIG. 2, and one or more of the control device 300 of FIG.3. Method 700 may include one or more operations, functions, or actionsas illustrated by one or more of blocks 702-706. Although the blocks areillustrated in sequential order, these blocks may also be performed inparallel, and/or in a different order than those described herein. Also,the various blocks may be combined into fewer blocks, divided intoadditional blocks, and/or removed based upon the desired implementation.

In addition, for the method 700 and other processes and methodsdisclosed herein, the flowchart shows functionality and operation of onepossible implementation of present embodiments. In this regard, eachblock may represent a module, a segment, or a portion of program code,which includes one or more instructions executable by a processor forimplementing specific logical functions or steps in the process. Theprogram code may be stored on any type of computer readable medium, forexample, such as a storage device including a disk or hard drive. Thecomputer readable medium may include non-transitory computer readablemedium, for example, such as computer-readable media that stores datafor short periods of time like register memory, processor cache andRandom Access Memory (RAM). The computer readable medium may alsoinclude non-transitory media, such as secondary or persistent long termstorage, like read only memory (ROM), optical or magnetic disks,compact-disc read only memory (CD-ROM), for example. The computerreadable media may also be any other volatile or non-volatile storagesystems. The computer readable medium may be considered a computerreadable storage medium, for example, or a tangible storage device. Inaddition, for the method 700 and other processes and methods disclosedherein, each block in FIG. 7 may represent circuitry that is wired toperform the specific logical functions in the process.

At block 702, the method may include transmitting, by a control deviceconfigured to control a first playback device, an indication that a userwas at a location at a particular time. As one example, in FIG. 5 thecomputing device 502 may transmit the location message 508A to theserver 504. A user may use a control device (i.e. a computing device)such as a smartphone to transmit an indication in the form of a“check-in” message (i.e. a location message), to a server (i.e. a serverdevice). The smartphone may transmit the indication in response to auser confirming a check-in location via a third party social networkingapplication. The user may transmit the “check-in” message because theuser wishes to later be provided with data identifying a portion ofmedia content playing at the location. The social networking applicationmay, for example, suggest check-in locations to the user via thecomputing device based on detecting a WIFI hotspot that the smartphoneis connected to, or based on the smartphone's GPS-resolved location. Byway of illustration, the indication may specify that the user was at“Joe's Coffee Shop” at 3:59 PM on Mar. 11, 2014. The server may receivethe indication from the computing device over a wireless or wirednetwork.

Block 702 may be functionally related to block 602 in other ways aswell.

In the examples described above with regard to block 702, the user mayhave full control over whether and/or how the user's location history isused. In one example, the user's location information will only becollected or used to identify media content if the user explicitlyexpresses consent to such collection or use. In another example, theserver may refrain from collecting information that could be used forpersonally identifying the user, and may only collect information thatcould be used to identify a user-account. Also, the user may be able toopt out of location data collection and use at any time.

At block 704, the method may include receiving, at the control device,data identifying at least one portion of media content played by asecond playback device. As one example, the control device 506 of FIG. 5may receive the playlist data 512D from the server 504. Further, someexamples of data identifying at least one portion of media content areshown in FIG. 8. The at least one portion of media content may have beenplayed by the second playback device at the location at the particulartime when the user was at the location. The data may be received from aserver.

Block 704 may also include receiving data identifying a plurality ofportions of media content played during a time period that includes theparticular time. In some embodiments, the data identifying the pluralityof portions of media content played during the time period that includesthe particular time indicates respective locations where the pluralityof portions of media content were played. A user may provide the controldevice with an input indicating the time period (i.e. 4:00-6:00 PM onMar. 11, 2014) and the control device may request that the serverprovide data corresponding to the user input. The control device maythen receive the data from the server. In one example, the controldevice may transmit an indication of the particular time (i.e. not atime period) and the server may nevertheless provide data identifying aplurality of portions of media content played during the time periodthat includes the particular time.

Block 704 may be functionally related to block 606 in other ways aswell. The nature of the received data is described in more detail in thedescription accompanying block 706 below.

At block 706, the method may include causing, by the control device, agraphical display to display the data identifying the at least oneportion of media content played at the location at the particular timewhen the user was at the location. In some embodiments, this may includecausing the graphical display to display the data identifying theplurality of portions of media content played during the time periodthat includes the particular time.

Although aspects of FIGS. 8-10 may apply to any of the blocks orembodiments disclosed herein, FIGS. 8-10 are generally related to block706, as shown below. FIGS. 8-10 depict example displays of a graphicaldisplay of a control device that could result from performance of block706.

FIG. 8 shows an example display 800 of the control device, in accordancewith block 706 and other embodiments herein. In this example, thedisplay includes a play time column 802, a content identifier column804, an artist/performer column 806, an album title 808, a trackduration column 810, and a location column 812. FIG. 8 also includes aportion identifier 820 and a streaming indicator 822.

Data displayed in FIG. 8 may generally represent data transmitted bymedia playback devices 510A-C of FIG. 5 (e.g. playlist data 512A-C), anddata received by the control device 506 or media playback device 510D(e.g. playlist data 512D). In FIG. 8, “Song E” may represent at leastone portion of media content playing at the location at the particulartime.

The play time column 802 may contain data indicating when respectiveportions of media content began playing. The content identifier column804 may indicate a title of the respective portions of media content.The artist/performer column 806 may indicate an artist or a performerassociated with the respective portions of media content. The albumtitle column 808 may indicate a title of an album associated with therespective portions of media content. The track duration column 810 mayindicate a playback duration associated with the respective portions ofmedia content. The location column 812 may indicate a location or aplayback zone where the respective portions of media content wereplayed.

The portion identifier 820 may indicate that the user “checked-in” orotherwise transmitted a location message to the server sometime between3:58:37 PM and 4:02:33 PM, inclusive. The portion identifier 820 furtherindicates a specific portion of media content (i.e. Song E) that wasplayed by a playback device at the location (i.e. Joe's Coffee Shop) atthe particular time (i.e. sometime between 3:58:37 PM and 4:02:33 PMinclusive) that the user was at the location. In this embodiment, thedisplay also includes information regarding portions of media contentthat played at the location during a time period that includes theparticular time. The user may have used the control device to indicate,to the server, a time period of interest. This feature may be usefulwhen the user causes the control device to transmit the location messagebefore or after an interesting portion of media content was playing atthe location. In this embodiment, the plurality of portions of mediacontent may be displayed sorted in chronological order (i.e. portionsplayed earlier in time placed at the top of the display). In otherembodiments, the display may be sorted in reverse chronological order.

In some examples, the user may be able to click or touch the any of thedisplayed text corresponding to a particular portion of media contentand the control device may display additional information about theportion, such as biographical information about the performer of theportion etc. If the user clicks the text again, the additionalinformation may be removed from the display. In this way, the user mayuse input to toggle an amount of detail shown by the display.

Also, the streaming indicator 822 may convey that “Song E” is availablefor playback on the user's media playback system if the user were tosubscribe to a particular music streaming service. Clicking thestreaming indicator 822 may cause the control device to initiate aprocess of the user subscribing to the music streaming service. Otherexamples are possible.

FIG. 9 shows an example display 900 of the control device, in accordancewith block 706 and other embodiments herein. FIG. 9 is similar to FIG. 8but includes two portion identifiers 920A and 920B.

Data displayed in FIG. 9 may generally represent data transmitted bymedia playback devices 510A-C of FIG. 5 (e.g. playlist data 512A-C), anddata received by the control device 506 or media playback device 510D(e.g. playlist data 512D).

The display 900 represents media content information pertaining to asituation where the user checked in at (i.e. sent location messagesfrom) two different locations at two different times. Portion identifier920A indicates that the user caused the control device to transmit alocation message at “John's Tavern” sometime between 3:51:30 PM and3:53:45 PM, inclusive. Portion identifier 920B indicates that the user(i.e. the user's control device) left John's Tavern and caused thecontrol device to transmit a location message at “Joe's Coffee Shop”sometime between 4:02:34 PM and 4:06:29 PM, inclusive. The displayindicates that Songs A-E were played at John's Tavern and Songs F-H wereplayed at Joe's Coffee Shop. In this example, the displayed mediacontent information is sorted in chronological order (i.e. portionsplayed earlier in time placed at the top of the display). “Song C” and“Song F” may represent separate instances of at least one portion ofmedia content that was playing at the location at the particular time.

In some embodiments, the control device may display information aboutportions of media content that were simultaneously playing at twodifferent locations, based on the time period information provided bythe user corresponding to the two (or more) location messages.

Data displayed in FIG. 10 may generally represent data transmitted bymedia playback devices 510A-C of FIG. 5 (e.g. playlist data 512A-C), anddata received by the control device 506 or media playback device 510D(e.g. playlist data 512D).

FIG. 10 shows an example display 1000 of the control device, inaccordance with block 706 and other embodiments described herein.Portion identifier 1020A indicates that the user caused the controldevice to transmit a location message at “Joe's Coffee Shop” sometimebetween 3:42:00 PM and 3:45:45 PM, inclusive. Portion identifier 1020Bindicates that the user left Joe's Coffee Shop and caused the controldevice to transmit a location message at “John's Tavern” sometimebetween 3:51:30 PM and 3:53:45 PM, inclusive. Portion identifier 1020Cindicates that the user went back to Joe's Coffee Shop and transmitted alocation message sometime between 4:02:34 PM and 4:06:29 PM, inclusive.In this embodiment, the information about the plurality of portions ofmedia content is sorted with respect to where the content was played.“Song A,” “Song C,” and “Song F” may represent separate instances of atleast one portion of media content that was playing at the location atthe particular time.

IV. Conclusion

The description above discloses, among other things, various examplesystems, methods, apparatus, and articles of manufacture including,among other components, firmware and/or software executed on hardware.It is understood that such examples are merely illustrative and shouldnot be considered as limiting. For example, it is contemplated that anyor all of the firmware, hardware, and/or software aspects or componentscan be embodied exclusively in hardware, exclusively in software,exclusively in firmware, or in any combination of hardware, software,and/or firmware. Accordingly, the examples provided are not the onlyway(s) to implement such systems, methods, apparatus, and/or articles ofmanufacture.

Embodiments described herein involve, among other things, providing froma server to a control device information regarding media content thatwas played by a media playback device while a user was at a locationcorresponding to the media playback device. The embodiments furtherinvolve, a control device displaying the information received from theserver and providing a capability for a user to control another mediaplayback device by, perhaps, causing the media playback device to playthe media content that was played by the playback device while the userwas at the corresponding location. Other aspects of the embodiments willbe made apparent in the remainder of the description herein.

In one aspect, a method is provided. The method involves receiving anindication that a user was at a location at a particular time;identifying at least one portion of media content playing at thelocation at the particular time; and transmitting data that indicatesthe identified at least one portion of media content to a computingdevice associated with the user.

In another aspect, a computing device is provided. The computing deviceincludes a processor and memory storing instructions that when executedby the computing device, cause the computing device to performfunctions. The functions include receiving an indication that a user wasat a location at a particular time; identifying at least one portion ofmedia content playing at the location at the particular time; andtransmitting data that indicates the identified at least one portion ofmedia content to a computing device associated with the user.

In yet another aspect, a non-transitory computer readable memory isprovided. The non-transitory computer readable memory has stored thereoninstructions executable by a computing device to cause the computingdevice to perform functions. The functions include receiving anindication that a user was at a location at a particular time;identifying at least one portion of media content playing at thelocation at the particular time; and transmitting data that indicatesthe identified at least one portion of media content to a computingdevice associated with the user.

In another aspect, a method is provided. The method involvestransmitting, by a control device configured to control a first playbackdevice, an indication that a user was at a location at a particular timeand receiving, at the control device, data identifying at least oneportion of media content played by a second playback device. The atleast one portion of media content was played by the second playbackdevice at the location at the particular time when the user was at thelocation. The method further includes causing, by the control device, agraphical display to display the data identifying the at least oneportion of media content played at the location at the particular timewhen the user was at the location.

In another aspect, a control device configured to control a firstplayback device is provided. The control device includes a processor andmemory storing instructions that when executed by the control device,cause the device to perform functions. The functions includetransmitting an indication that a user was at a location at a particulartime and receiving data identifying at least one portion of mediacontent played by a second playback device. The at least one portion ofmedia content was played by the second playback device at the locationat the particular time when the user was at the location. The methodfurther includes causing a graphical display to display the dataidentifying the at least one portion of media content played at thelocation at the particular time when the user was at the location.

In yet another aspect, a non-transitory computer readable memory isprovided. The non-transitory computer readable memory has stored thereoninstructions executable by a computing device configured to control afirst playback device to cause the computing device to performfunctions. The functions include transmitting an indication that a userwas at a location at a particular time and receiving data identifying atleast one portion of media content played by a second playback device.The at least one portion of media content was played by the secondplayback device at the location at the particular time when the user wasat the location. The method further includes causing a graphical displayto display the data identifying the at least one portion of mediacontent played at the location at the particular time when the user wasat the location.

Additionally, references herein to “embodiment” means that a particularfeature, structure, or characteristic described in connection with theembodiment can be included in at least one example embodiment of aninvention. The appearances of this phrase in various places in thespecification are not necessarily all referring to the same embodiment,nor are separate or alternative embodiments mutually exclusive of otherembodiments. As such, the embodiments described herein, explicitly andimplicitly understood by one skilled in the art, can be combined withother embodiments.

The specification is presented largely in terms of illustrativeenvironments, systems, procedures, steps, logic blocks, processing, andother symbolic representations that directly or indirectly resemble theoperations of data processing devices coupled to networks. These processdescriptions and representations are typically used by those skilled inthe art to most effectively convey the substance of their work to othersskilled in the art. Numerous specific details are set forth to provide athorough understanding of the present disclosure. However, it isunderstood to those skilled in the art that certain embodiments of thepresent disclosure can be practiced without certain, specific details.In other instances, well known methods, procedures, components, andcircuitry have not been described in detail to avoid unnecessarilyobscuring aspects of the embodiments. Accordingly, the scope of thepresent disclosure is defined by the appended claims rather than theforgoing description of embodiments.

When any of the appended claims are read to cover a purely softwareand/or firmware implementation, at least one of the elements in at leastone example is hereby expressly defined to include a tangible,non-transitory medium such as a memory, DVD, CD, Blu-ray, and so on,storing the software and/or firmware.

I claim:
 1. A method comprising: streaming, via a network interface byone or more servers of a media streaming service, a playlist of audiotracks to one or more playback devices for playback by the one or moreplayback devices; while streaming the playlist to the one or moreplayback devices, receiving, via the network interface of the one ormore servers, a location message comprising location informationindicating a current location of a mobile computing device, the locationinformation including global positioning system (GPS) data indicatingcurrent GPS coordinates of the mobile computing device, wherein themobile computing device transmits the location message indicating thecurrent location of the mobile computing device when the current GPScoordinates indicate that the mobile computing device has movedlocation; based on the GPS data, determining, via the one or moreservers, identification information indicating a particular first audiotrack that is currently playing on one or more playback devices at thecurrent location of the mobile computing device and two or more recentlyplayed second audio tracks that were played back preceding theparticular first audio track by the one or more playback devices and(ii) availability information indicating that the particular first audiotrack and the two or more recently played second audio tracks areavailable for streaming playback via a media streaming service, whereinthe one or more playback devices are playing a playlist including theparticular first audio track and the two or more recently played secondaudio tracks, wherein the one or more playback devices are differentfrom the one or more servers and the mobile computing device; and inresponse to receiving the location message and determining theidentification information indicating the particular first audio track,causing a control interface on the mobile computing device toconcurrently display (i) a Now Playing region including a firstgraphical indication of the particular first audio track currentlyplaying on the one or more playback devices, (ii) a second regionincluding graphical indicators of the two or more recently played secondaudio tracks and (iii) a selectable third region including a graphicalindication that the particular first audio track and the two or morerecently played second audio tracks are available for playback via themedia streaming service, wherein the selectable third region comprises alink to the playlist of the media streaming service, and wherein theaudio tracks of the playlist are streamable to the mobile computingdevice from the media streaming service.
 2. The method of claim 1,wherein the location message further comprises at least one of adescriptive identifier of the current location or a name of a computernetwork associated with the current location.
 3. The method of claim 1,wherein determining the identification information indicating theparticular first audio track of the playlist that is currently playingon the one or more playback devices at the current location comprisesdetermining playlist information indicating the playlist being streamedto the one or more playback devices at the current location.
 4. Themethod of claim 1, wherein receiving the location message comprises:receiving, via the one or more servers over one or more networks fromone or more servers associated with the one or more playback devices,the location message.
 5. The method of claim 1, wherein receiving thelocation message comprises: receiving, via the one or more servers overone or more networks from the mobile computing device, the locationmessage.
 6. A non-transitory computer-readable medium storinginstructions executable by one or more servers of a media streamingservice to cause the one or more servers to perform functionscomprising: streaming, via a network interface, a playlist of audiotracks to one or more playback devices for playback by the one or moreplayback devices; while streaming the playlist to the one or moreplayback devices, receiving, via the network interface of the one ormore servers, a location message comprising location informationindicating a current location of a mobile computing device, the locationinformation including global positioning system (GPS) data indicatingcurrent GPS coordinates of the mobile computing device, wherein themobile computing device transmits the location message indicating thecurrent location of the mobile computing device when the current GPScoordinates indicate that the mobile computing device has movedlocation; based on the GPS data, determining identification informationindicating a particular first audio track that is currently playing onone or more playback devices at the current location of the mobilecomputing device and two or more recently played second audio tracksthat were played back preceding the particular first audio track by theone or more playback devices and iii) availability informationindicating that the particular first audio track and the two or morerecently played second audio tracks are available for streaming playbackvia a media streaming service, wherein the one or more playback devicesare playing a playlist including the particular first audio track andthe two or more recently played second audio tracks, wherein the one ormore playback devices are different from the one or more servers and themobile computing device; and in response to receiving the locationmessage and determining the identification information indicating theparticular first audio track, causing a control interface on the mobilecomputing device to concurrently display (i) a Now Playing regionincluding a first graphical indication of the particular first audiotrack currently playing on the one or more playback devices, (ii) asecond region including graphical indicators of the two or more recentlyplayed second audio tracks and (iii) a selectable third region includinga graphical indication that the particular first audio track and the twoor more recently played second audio tracks are available for playbackvia the media streaming service, wherein the selectable third regioncomprises a link to the playlist of the media streaming service, andwherein the audio tracks of the playlist are streamable to the mobilecomputing device from the media streaming service.
 7. The non-transitorycomputer-readable medium of claim 6, wherein the location messagefurther comprises at least one of a descriptive identifier of thecurrent location or a name of a computer network associated with thecurrent location.
 8. The non-transitory computer-readable medium ofclaim 6, wherein determining the identification information indicatingthe particular first audio track of the playlist that is currentlyplaying on the one or more playback devices at the current locationcomprises determining playlist information indicating the playlist beingstreamed to the one or more playback devices at the current location. 9.The non-transitory computer-readable medium of claim 6, whereinreceiving the location message comprises: receiving, via the networkinterface of the one or more servers from one or more servers associatedwith the one or more playback devices, the location message.
 10. Thenon-transitory computer-readable medium of claim 6, wherein receivingthe location message comprises: receiving, via the network interface ofthe one or more servers from the mobile computing device, the locationmessage.
 11. A computing system of a media streaming service comprisingone or more servers, the one or more servers comprising: a networkinterface; one or more processors; and memory storing instructionsexecutable by the one or more processors to cause the one or moreservers to perform functions comprising: streaming, via the networkinterface, a playlist of audio tracks to one or more playback devicesfor playback by the one or more playback devices; while streaming theplaylist to the one or more playback devices, receiving, via the networkinterface, a location message comprising location information indicatinga current location of a mobile computing device, the locationinformation including global positioning system (GPS) data indicatingcurrent GPS coordinates of the mobile computing device, wherein themobile computing device transmits the location message indicating thecurrent location of the mobile computing device when the current GPScoordinates indicate that the mobile computing device has movedlocation; based on the GPS data, determining, identification informationindicating a particular first audio track that is currently playing onone or more playback devices at the current location of the mobilecomputing device and two or more recently played second audio tracksthat were played back preceding the particular first audio track by theone or more playback devices and (ii) availability informationindicating that the particular first audio track and the two or morerecently played second audio tracks are available for streaming playbackvia a media streaming service, wherein the one or more playback devicesare playing a playlist including the particular first audio track andthe two or more recently played second audio tracks, wherein the one ormore playback devices are different from the one or more servers and themobile computing device; and in response to receiving the locationmessage and determining the identification information indicating theparticular first audio track, causing a control interface on the mobilecomputing device to concurrently display (i) a Now Playing regionincluding a first graphical indication of the particular first audiotrack currently playing on the one or more playback devices, (ii) asecond region including graphical indicators of the two or more recentlyplayed second audio tracks and (iii) a selectable third region includinga graphical indication that the particular first audio track and the twoor more recently played second audio tracks are available for playbackvia the media streaming service, wherein the selectable third regioncomprises a link to the playlist of the media streaming service, andwherein the audio tracks of the playlist are streamable to the mobilecomputing device from the media streaming service.
 12. The computingsystem of claim 11, wherein the location message further comprises atleast one of a descriptive identifier of the current location or a nameof a computer network associated with the current location.
 13. Thecomputing system of claim 11, wherein determining the identificationinformation indicating the particular first audio track of the playlistthat is currently playing on the one or more playback devices at thecurrent location comprises determining playlist information indicatingthe playlist being streamed to the one or more playback devices at thecurrent location.
 14. The computing system of claim 11, whereinreceiving the location message comprises: receiving, via the networkinterface of the one or more servers from one or more servers associatedwith the one or more playback devices, the location message.
 15. Thecomputing system of claim 11, wherein receiving the location messagecomprises: receiving, via the network interface of the one or moreservers from the mobile computing device, the location message.
 16. Themethod of claim 1, further comprising: causing the control interface onthe mobile computing device to display one or more additional audiotracks of the playlist that precede the particular first audio track inthe playlist and were recently played by the one or more playbackdevices.
 17. The non-transitory computer-readable medium of claim 6,wherein the functions further comprise: causing the control interface onthe mobile computing device to display one or more additional audiotracks of the playlist that precede the particular first audio track inthe playlist and were recently played by the one or more playbackdevices.
 18. The method of claim 1, wherein the control interface is agraphical user interface of a media streaming service application. 19.The non-transitory computer-readable medium of claim 6, wherein thecontrol interface is a graphical user interface of a media streamingservice application.
 20. The computing system of claim 11, wherein thecontrol interface is a graphical user interface of a media streamingservice application.